package com.sunlee.common.core.service;

import com.sunlee.common.core.entity.PageData;

import java.util.List;
import java.util.Map;

/**
 * CRUD基础服务接口
 *
 * @author sunlee
 */
public interface BaseCrudService<T, D> extends BaseService<T> {

    /**
     * 分页查询
     *
     * @param params 查询参数
     * @return 分页实体
     */
    PageData<D> pageOwn(Map<String, Object> params);

    /**
     * 批量查询
     *
     * @param params 查询参数
     * @return 集合实体
     */
    List<D> listOwn(Map<String, Object> params);

    /**
     * 根据主键ID查询
     *
     * @param id 主键ID
     * @return 查询实体
     */
    D getOwn(Long id);

    /**
     * 插入一条数据
     *
     * @param dto 插入的数据
     */
    void saveOwn(D dto);

    /**
     * 根据主键ID更新数据
     *
     * @param dto 需更新的数据
     */
    void updateOwn(D dto);

    /**
     * 根据主键批量删除数据
     *
     * @param ids 主键ID
     */
    void deleteOwn(Long[] ids);

}